package com.sgcc.epri.dcloud.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.util.List;

/**
 * @author syh
 */
@Data
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@TableName("${dm.private-schema-name}.SG_TREE_STRUCTURE_E")
public class TreeNode implements Comparable<TreeNode>{

    /**
     * 雪花id自增
     */
    @TableId(value = "id", type = IdType.ID_WORKER)
    private Long id;

    private String parentId;

    private String level;

    private String title;

    private String fileType; // --文件类型  0:文件夹、1:文件

    private String autoFlag; //  -- 是否自动计算 0:自动、1:不自动

    private String calStartTime; // --计算区间 yyyy-mm-dd

    private String calEndTime;

    private String updateTime; //  -- 结果生成时间

    private String calStopTime; // 计算截止时间

    @TableField(exist = false)
    private List<TreeNode> children;


    // 递归查找上层节点
    public TreeNode getParent(String nodeId, TreeNode root) {
        if (root.getId().equals(nodeId)) {
            return null; // 已经是根节点，没有上级
        }
        for (TreeNode child : root.getChildren()) {
            if (child.getId().equals(nodeId)) {
                return root; // 找到节点，返回根节点作为其上级
            }
            if(child.getChildren() == null )continue;
            TreeNode parent = child.getParent(nodeId, child);
            if (parent != null) {
                return parent; // 在子节点中递归找到上级，返回
            }
        }
        return null; // 没有找到上级节点
    }


    @Override
    public int compareTo(TreeNode treeNode) {
        return this.id.compareTo(treeNode.id);
    }
}